package com.fun.scenario;

import com.fun.service.fun.ModelCheck;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

public class CheckUserNameRepeat {

    public static Map<String, Long> checkUserMap;

    static {
        checkUserMap = new HashMap<>();
        checkUserMap.put("dkz", 1L);
        checkUserMap.put("lpt", 2L);
    }


    public static void main(String[] args) {
        String userName = "dkz";
        // 保存的时候校验
        checkUserName(userName , (a, b)-> true , null);
        // 修改的时候校验
        userName = "dkz";
        Long userId = 1L;
        checkUserName(userName , (a, b)-> !Objects.equals(a,b), userId);
    }


    public static void checkUserName(String userName, ModelCheck modelCheck , Long inUserId) {
        Long aLong = checkUserMap.get(userName);
        if (aLong != null) {
            // 如果是保存操作 ， 那么只要这个用户名不为空 那么就需要抛出异常
            if (modelCheck.check(inUserId , aLong)) {
                // 如果是修改操作 ， 那么还要比对 userId 是不是一致
                throw new RuntimeException("用户名重复");
            }
        }
    }


}
